package top.hymsk.ecommerce.service;

import top.hymsk.ecommerce.pojo.DTO.PlaceProductDTO;
import top.hymsk.ecommerce.pojo.response.GeneralResponse;

import java.util.List;

/**
 * @author 花于陌上开
 */
public interface OrderService {
    /*买家模块*/

    /**
     * 获取订单列表
     *
     * @param userId 用户id
     * @param page   分页参数
     * @return 响应信息
     */

    GeneralResponse getOrderListByBuyer(Integer userId, Integer page);

    /**
     * 创建订单
     *
     * @param userId           用户id
     * @param placeProductList 订单商品及数量列表
     * @return 响应信息
     */
    GeneralResponse place(Integer userId, List<PlaceProductDTO> placeProductList);

    /**
     * 支付
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 响应信息
     */
    GeneralResponse payment(Integer userId, Integer orderId);

    /**
     * 查看订单状态
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 响应信息
     */
    GeneralResponse getStatusByBuyer(Integer userId, Integer orderId);

    /**
     * 收货
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 响应信息
     */
    GeneralResponse receive(Integer userId, Integer orderId);

//    /**
//     * 获取商品待评论列表
//     *
//     * @param userId  用户id
//     * @param orderId 订单id
//     * @return 响应信息
//     */
//    GeneralResponse getRemarkWaitList(Integer userId, Integer orderId);

    /**
     * 商品评论
     *
     * @param userId    用户id
     * @param orderId   订单id
     * @param productId 商品id
     * @param remark    评论
     * @param star      评分
     * @return 响应信息
     */
    GeneralResponse remark(Integer userId, Integer orderId, Integer productId, String remark, Double star);


    /*卖家模块*/

    /**
     * 获取订单列表
     *
     * @param storeId 店铺id
     * @return 响应信息
     */
    GeneralResponse getOrderListBySeller(Integer storeId, Integer page);

    /**
     * 取消订单
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 响应信息
     */
    GeneralResponse cancel(Integer userId, Integer orderId);

    /**
     * 订单商品退款
     *
     * @param userId    用户id
     * @param orderId   订单id
     * @param productId 商品id
     * @return 响应信息
     */
    GeneralResponse refund(Integer userId, Integer orderId, Integer productId);

    /**
     * 查看订单状态
     *
     * @param storeId 店铺id
     * @param orderId 订单id
     * @return 响应信息
     */
    GeneralResponse getStatusBySeller(Integer storeId, Integer orderId);

    /**
     * 发货
     *
     * @param storeId       店铺id
     * @param orderId       订单id
     * @param courierNumber 物流编号
     * @return 响应信息
     */
    GeneralResponse deliver(Integer storeId, Integer orderId, String courierNumber);


}
